package com.palmshop.online.controller;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.palmshop.online.entity.Customer;
import com.palmshop.online.entity.PalmResult;
import com.palmshop.online.service.CusService;
import com.palmshop.util.Qutil;

/**
 * 用户信息相关的controller
 * @author quan
 *
 */
@Controller
@RequestMapping("/cus")
public class CusContorller {

	@Resource
	private CusService service;//service注解
	
	
	/**
	 * 测试
	 * @throws IOException 
	 */
	@RequestMapping("/ceshi.do")
	public void ceshi(HttpServletRequest request,HttpServletResponse response) throws IOException{
		
		response.sendRedirect("../online/return_url.jsp");
	}
	
	
	/**
	 * 根据用户名和密码实现用户的注册功能（暂时保留）
	 * @param cusAccount：登录帐号
	 * @param cusPwd：登录密码
	 * @return json
	 */
	@RequestMapping("/addCus.do")
	@ResponseBody
	public PalmResult addCus(String cusAccount,String cusPwd){
		
		Customer cus=new Customer();
		cus.setCusUnique(Qutil.createNum());//用户的唯一性标识
		cus.setCusRegeditDate(Qutil.getDate());//用户创建日期
		cus.setCusPoints(0);//用户积分
		cus.setCusAccount(cusAccount);//用户登录号
		cus.setCusPwd(cusPwd);//用户密码
		return service.addCus(cus);
	}
	
	/**
	 * 注册验证： 根据登录名验证当前用户是否已注册
	 * @param cusAccount：登录帐号
	 * @return json
	 */
	@RequestMapping("/findCusExist.do")
	@ResponseBody
	public PalmResult findCusExist(String cusAccount){
		return service.findCusExist(cusAccount);
	}

	/**
	 * 登录验证：根据用户名，密码和验证码验证是否登录正确
	 * @param request
	 * @param cusAccount：用户名
	 * @param cusPwd：密码
	 * @param cusCode：验证码
	 * @return json
	 */
	@RequestMapping("/findCheckLogin.do")
	@ResponseBody
	public PalmResult findCheckLogin(HttpServletRequest request,String cusAccount,String cusPwd,String cusCode){
		
		Map<String,Object>map=new HashMap<String,Object>();
		map.put("cusAccount", cusAccount);
		map.put("cusPwd", cusPwd);
		map.put("cusCode", cusCode);
		return service.findCheckLogin(request,map);
	}
	
	

	/**
	 * 根据用户ip获取用户的当前位置-已弃用
	 * @param request
	 * @return json
	 */
	@RequestMapping("/getLocation.do")
	@ResponseBody
	public PalmResult getLocation(HttpServletRequest request){
		
		return service.getLocation(request);
		
	}
	
	/**
	 * 根据用户标识查询用户的基本信息
	 * @param cusUnique：用户唯一性标识
	 * @return json
	 */
	@RequestMapping("/findCusById.do")
	@ResponseBody
	public PalmResult findCusById(String cusUnique){
		return service.findCusById(cusUnique);
	}
	
	
	/**
	 * 根据用户id修改对应的用户信息
	 * @param cusId：用户id
	 * @param cusName:用户姓名
	 * @param cusEmail：用户邮箱
	 * @param cusPhone：用户联系电话
	 * @return json
	 */
	@RequestMapping("/updateCusById.do")
	@ResponseBody
	public PalmResult updateCusById(String cusUnique,String cusName,String cusEmail,String cusPhone){
		Customer cus=new Customer();
		cus.setCusUnique(cusUnique);
		cus.setCusEmail(cusEmail);
		cus.setCusPhone(cusPhone);
		cus.setCusName(cusName);
		return service.updateCusById(cus);
	}


	/**
	 * 根据给定的地址id,将该地址设为当前用户的默认地址
	 * @param cusUnique：用户唯一性标识
	 * @param addrId：地址id
	 * @return json
	 */
	@RequestMapping("/updateAddrDefByCus.do")
	@ResponseBody
	public PalmResult updateAddrDefByCus(String cusUnique,Integer addrId){
		return service.updateAddrDefByCus(cusUnique, addrId);
	}
	
	

	/**
	 * 根据用户的id修改该用户的密码
	 * @param cusPwd：密码
	 * @param cusId：用户id
	 * @return json
	 */
	@RequestMapping("/updatePassWord.do")
	@ResponseBody
	public PalmResult updatePassWord(String cusPwd,String cusId){
		Map<String,Object>map=new HashMap<String,Object>();
		map.put("cusId", cusId);
		map.put("cusPwd", cusPwd);
		return service.updatePassWord(map);
	}
	
	
	/**
	 * 根据用户id验证 当前密码是否正确
	 * @param cusPwd:用户密码
	 * @param cusId：用户id
	 * @return json
	 */
	@RequestMapping("/findRWByCusId.do")
	@ResponseBody
	public PalmResult findRWByCusId(String cusPwd,String cusId){
		System.out.println("cusPwd:"+cusPwd+";cusId");
		
		Map<String,Object>map=new HashMap<String,Object>();
		map.put("cusId", cusId);
		map.put("cusPwd", cusPwd);
		return service.findRWByCusId(map);
	}
	
	

	/**
	 * 根据邮箱找回密码
	 * @param cusEmail:用户找回密码用的邮箱
	 * @return json
	 */
	@RequestMapping("/findPwd.do")
	@ResponseBody
	public PalmResult findPwd(String cusEmail){
		
		return service.findPwd(cusEmail);
	}
	
	
	/* >>>>>>>>>>>>>用户积分>>>>>>>>>>>>>>>>>>>>>>>>>> */
	/**
	 * 根据用户的id查询对应的积分信息
	 * @param cusUnique:用户唯一性标识
	 * @return json
	 */
	@RequestMapping("/findPointsById.do")
	@ResponseBody
	public  PalmResult findPointsById(String cusUnique){
		
		return service.findPointsById(cusUnique);
	}
	

	/**
	 * 根据用户唯一性标识和店铺的唯一性标识查询当前用户在当前店铺中是否有积分信息
	 * @param cusUnique：用户唯一性标识
	 * @param shopUnique：店铺唯一性标识
	 * @return json
	 */
	@RequestMapping("/findPointsExistById.do")
	@ResponseBody
	public PalmResult findPointsExistById(String cusUnique,String shopUnique ){
		Map<String,Object> map=new HashMap<String,Object>();
		map.put("cusUnique", cusUnique);
		map.put("shopUnique", "0830201613441210001");
		map.put("cusShopPoints", 100);
		map.put("cusPointsId", 1);
		return service.findPointsExistById(map);
		
	}
	
	
	/**
	 * 根据地址id删除对应的地址信息
	 * @param addrId:地址id
	 * @return json
	 */
	@RequestMapping("/deleteAddr.do")
	@ResponseBody
	public PalmResult deleteAddr(Integer addrId){
		
		return service.deleteAddr(addrId);
	}
	
	/**
	 * 根据地址id修改对应的地址信息
	 * @param addrId:地址id
	 * @param addrAddr:收货地址
	 * @param addrPhone：收货人联系电话
	 * @param addrReceiverName：收货人姓名
	 * @param cusUnique：用户唯一性标识
	 * @return json
	 */
	@RequestMapping("/updateAddrById.do")
	@ResponseBody
	public PalmResult updateAddrById(Integer addrId, String addrAddr,
			String addrPhone, String addrReceiverName,String cusUnique) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("addrId", addrId);
		map.put("addrAddr", addrAddr);
		map.put("addrPhone", addrPhone);
		map.put("addrReceiverName", addrReceiverName);
		map.put("cusUnique", cusUnique);
		
		return service.updateAddrById(map);
	}
	

	/**
	 * 个人中心根据地址id修改对应的地址信息
	 * @param addrId:地址id
	 * @param addrAddr:收货地址
	 * @param addrPhone：收货人联系电话
	 * @param addrReceiverName：收货人姓名
	 * @param cusUnique：用户唯一性标识
	 * @return json
	 */
	@RequestMapping("/updateAddrByIdP.do")
	@ResponseBody
	public PalmResult updateAddrByIdP(Integer addrId, String addrAddr,
					String addrPhone, String addrReceiverName,String cusUnique) {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("addrId", addrId);
		map.put("addrAddr", addrAddr);
		map.put("addrPhone", addrPhone);
		map.put("addrReceiverName", addrReceiverName);
		map.put("cusUnique", cusUnique);
		return service.updateAddrByIdP(map);
	}


	/**
	 * 根据地址id查询对应的地址信息
	 * @param addrId:地址id
	 * @return json
	 */
	@RequestMapping("/findAddrByIdA.do")
	@ResponseBody
	public PalmResult findAddrByIdA(Integer addrId){
		return service.findAddrByIdA(addrId);
	}
	
	
	/**
	 * 根据用户的id查询对应的地址信息
	 * @param cusUnique:用户唯一性标识
	 * @return json
	 */
	@RequestMapping("/findAddrByCusId.do")
	@ResponseBody
	public PalmResult findAddrByCusId(String cusUnique) {
		return service.findAddrByCusId(cusUnique);
	}
	
	/**
	 * 根据用户的id查询对应的地址信息
	 * @param cusUnique:用户唯一性标识
	 * @return json
	 */
	@RequestMapping("/findAddrById.do")
	@ResponseBody
	public PalmResult findAddrById(String cusUnique) {
		return service.findAddrById(cusUnique);
	}

	/* >>>>>>end 用户地址 end>>>>>>>>>>>>>>>>> */
	
	
	
}
